Water / Vegetation Moisture Index
NDWI_GAO – Normalized Difference Water Index (Gao, 1996)
NDWI_GAO is a Near-InfraRed–SWIR based index designed to estimate vegetation water content
and canopy moisture using NIR and SWIR reflectance.
1. Scientific Definition
The Gao NDWI (1996) is a water content index for vegetation canopies that
uses the contrast between NIR (sensitive to leaf internal structure) and SWIR (strongly
absorbed by liquid water).
Formula (Gao, 1996)
NDWI_GAO = (NIR − SWIR) / (NIR + SWIR)
Range: −1 → +1
NIR – Near InfraRed reflectance
SWIR – Short-Wave InfraRed reflectance (around 1.2–1.6 μm)
Typical Interpretation
NDWI_GAO Interpretation
< 0 Dry soil / built-up / low water content
0 – 0.2 Low canopy water content / stressed vegetation
0.2 – 0.4 Moderate vegetation moisture
> 0.4 High vegetation water content / healthy canopy
Main Applications
Vegetation water content estimation
Drought monitoring
Crop stress analysis
Complement to NDVI / NDII in agricultural studies
2. Data & Bands
Sentinel-2 (Approximate Gao NDWI)
NIR: B8 (~842 nm)
SWIR: B11 (~1610 nm)
(Closest to 1.24 μm band used in the original Gao paper)
Landsat 8 / 9
NIR: B5
SWIR: B6 (or B6 ≈ 1.6 μm, commonly used)
Best Practices
Use surface reflectance (SR) products.
Mask clouds & shadows before computing the index.
Use time series of NDWI_GAO to track drought events.
Combine with NDVI / NDII for better vegetation diagnostics.
Suggested Palette
[ "#440154", "#414487", "#2a788e", "#22a884", "#7ad151", "#fde725" ]
3. Google Earth Engine Code – NDWI_GAO (NIR–SWIR)
Copy GEE code
// NDWI_GAO (Gao 1996) using Sentinel-2 SR
// NDWI_GAO = (NIR - SWIR) / (NIR + SWIR)
// Here: NIR = B8, SWIR ≈ B11
var roi = geometry; // Draw your AOI as 'geometry'
Map.centerObject(roi, 11);
// 1. Load Sentinel-2 surface reflectance
var s2 = ee.ImageCollection("COPERNICUS/S2_SR")
.filterBounds(roi)
.filterDate("2023-01-01", "2023-12-31")
.filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE", 20))
.select(["B8","B11"]); // NIR, SWIR
// 2. Median composite
var img = s2.median().clip(roi);
// 3. Compute NDWI_GAO
var ndwi_gao = img.expression(
"(N - S) / (N + S)",
{
"N": img.select("B8"), // NIR
"S": img.select("B11") // SWIR
}
).rename("NDWI_GAO");
// 4. Visualization
var vis = {
min: -1,
max: 1,
palette: ["#440154","#414487","#2a788e","#22a884","#7ad151","#fde725"]
};
Map.addLayer(ndwi_gao, vis, "NDWI_GAO (NIR-SWIR)");
// Optional: True Color background
var rgb = ee.ImageCollection("COPERNICUS/S2_SR")
.filterBounds(roi)
.filterDate("2023-01-01", "2023-12-31")
.filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE", 20))
.select(["B4","B3","B2"])
.median()
.clip(roi);
Map.addLayer(rgb, {min:0, max:3000}, "True Color", false);
// 5. Export NDWI_GAO as GeoTIFF
Export.image.toDrive({
image: ndwi_gao,
description: "NDWI_GAO_Export",
fileNamePrefix: "NDWI_GAO_NIR_SWIR",
region: roi,
scale: 20, // SWIR band resolution
crs: "EPSG:4326",
maxPixels: 1e13
});
NDWI_GAO (Gao 1996) reference page · Start4IT Remote Sensing Index Library